package cn.kpt.auth.service;

import cn.kpt.beans.pojo.ItripUser;

/**
 * @version 1.0
 * @ClassName TokenService
 * @Description TODO
 * @Author kangpengtao
 * @Date 2019/9/28 17:32
 */
public interface TokenService {

    String TOKEN_KEY = "token:";
    //TOken过期时间：3600（s）
    int TOKEN_TIME_OUT = 3600;
    //剩余置换时间：1800（s）
    int TOKEN_REFRESH_TIME = 1800;
    //缓存旧token
    int TOKEN_CACHE_OLD_TIME = 120;

    /**
     * 生成token信息
     *
     * @param itripUser
     * @param userAgent
     * @return
     */
    public String genToken(ItripUser itripUser, String userAgent) throws Exception;

    /**
     * 保存token
     *
     * @param token
     * @param itripUser
     * @param userAgent
     * @throws Exception
     */
    void saveToken(String token, ItripUser itripUser, String userAgent) throws Exception;

    /**
     * 删除token（注销）
     *
     * @param token
     * @throws Exception
     */
    void delToken(String token) throws Exception;

    /**
     * 是否到达置换时间
     * @param token
     * @param userAgent
     * @return
     */
    boolean checkTokenTimeOut(String token, String userAgent)throws Exception;

    /**
     * 删除token
     * @param token
     * @param userAgent
     * @param currentUser
     * @return
     */
    String refreshToken(String token, String userAgent, ItripUser currentUser)throws Exception;
}
